home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE2
/
PD
/
VINCE
/
!ViNCe
/
s
/
mcode
Wrap
Text File
|
2002-03-10
|
2KB
|
98 lines
; Use the GET directive to include register definitions as if typed here
GET h.RegNames
AREA |C$$Code|, CODE, READONLY
EXPORT mc_fill_rectangle
mc_fill_rectangle ROUT
;on entry r0 -> output
; r1 = size x
; r2 = size y
; r3 = pixels per line
; sp+0 = pixel value
CMP r1, #1
CMPEQ r2, #1
BEQ mc_fill_rectangle_1x1
STMFD r13!,{r0-r12,r14}
LDR r4, [r13,#4*14]
CMP r1, #0
CMPLE r2, #0
LDMLEFD r13!,{r0-r12,pc}^
MOV r4,r4,LSL#16
MOV r4,r4,LSR#16
ORR r6,r4,r4,LSL#16
MOV r7,r6
MOV r8,r6
MOV r9,r6
MOV r5,r4,LSR#8
MOV r10,r1
10
MOV r1,r10
BL mc_fill_rectangle_line
SUB r0,r0,r10,LSL#1
ADD r0,r0,r3,LSL#1
SUBS r2,r2,#1
BGT %B10
LDMFD r13!,{r0-r12,pc}^
mc_fill_rectangle_line ROUT
;on entry r0->output
; r1=no. of pixels
; r4,r5,r6-r9 pixelvalue
TST r0,#3
BEQ %F00
STRB r4,[r0],#1
STRB r5,[r0],#1
SUBS r1,r1,#1
MOVEQS pc,r14
00
08
CMP r1, #8
BLT %F04
STMIA r0!,{r6-r9}
SUBS r1,r1,#8
BGE %B08
04
CMP r1, #4
BLT %F02
STMIA r0!,{r6-r7}
SUBS r1,r1,#4
BGE %B04
02
CMP r1, #2
BLT %F01
STR r6,[r0],#4
SUBS r1,r1,#2
BGE %B02
01
CMP r1,#1
MOVLTS pc,r14
STRB r4,[r0],#1
STRB r5,[r0],#1
MOVS pc,r14
mc_fill_rectangle_1x1
LDR r4, [r13]
STRB r4,[r0],#1
MOV r4,r4,LSR#8
STRB r4,[r0],#1
MOVS pc,r14
END